package com.atguigu.dao;

import com.atguigu.bean.Customer;

import java.sql.Connection;
import java.sql.Date;
import java.util.List;

/**
 * 此接口用于规范针对于 customers 表的常用操作
 *
 * @author admin
 */
public interface CustomerDAO {

    /**
     * 将 customer 对象添加到数据库中
     *
     * @param connection
     * @param customer
     */
    void insert(Connection connection, Customer customer) throws Exception;

    /**
     * 根据指定的 id，删除表中的一条记录
     *
     * @param connection
     * @param id
     */
    void deleteById(Connection connection, int id) throws Exception;

    /**
     * 针对内存中的 customer 对象，去修改数据表中指定的记录
     *
     * @param connection
     * @param customer
     */
    void update(Connection connection, Customer customer) throws Exception;

    /**
     * 针对指定的id，查询得到对应的 Customer 对象
     *
     * @param connection
     * @param id
     */
    Customer getCustomerById(Connection connection, int id);

    /**
     * 查询表中所有的记录构成的集合
     *
     * @param connection
     * @return
     */
    List<Customer> getAll(Connection connection);

    /**
     * 返回数据表中的数据的条目数
     *
     * @param connection
     * @return
     */
    Long getCount(Connection connection);

    /**
     * 返回数据表中最大的生日
     *
     * @param connection
     * @return
     */
    Date getMaxBirth(Connection connection);

}
